// 入口文件
const express = require('express')
const app = express()
const cookieSession = require('cookie-session')
const multer =require('multer')
const path = require('path')
const fs = require('fs')
// 设置上传的目录文件夹
const upload = multer({
  dest: './public/upload',
  limits: { fileSize: 1024 * 1024 * 2 } // 单个文件大小限制
})
// 模板引擎
app.set('view engine', 'html')
app.set('views', `${__dirname}/views`)
app.engine('html', require('ejs').renderFile)
// 静态资源
app.use(express.static('public'))
// 处理post请求参数
app.use(express.urlencoded({extended: true}))
// 使用session
app.use(cookieSession({
  keys: ['zxyong'], // 密钥
  maxAge: 1000 * 60 * 60  //有效期
}))

// 首页
app.use(/\/(index)?/, require('./routes/index'))   // / 或 /index
// 文章
app.use('/article', require('./routes/article'))
// 搜索
app.use('/search', require('./routes/search'))
// 登录
app.use('/user', require('./routes/user'))
// 后台 - 权限验证
app.use('/admin/?*', require('./middleware/auth').allowToAdmin)
// session延时
app.use((req, res, next) => {
  req.session.nowInMinutes = Math.floor(Date.now() / 60e3)  // 每分钟更新一次
  next()
})
// 后台 - 上传文件
app.post('/admin/?*', upload.single('upload'), (req, res, next) => {
  // 上传成功的文件对象
  const {file} = req
  if(file){
    let extname = path.extname(file.originalname) // 文件后缀名
    fs.renameSync(file.path, file.path + extname) // 上传后的文件路径
    req.uploadUrl = '/upload/' + file.filename + extname
  }
  next()
})
// 后台 - 首页
app.use('/admin', require('./routes/admin'))
// 后台 - 文章管理
app.use('/admin/article', require('./routes/admin/article'))
// 后台 - 类目管理
app.use('/admin/category', require('./routes/admin/category'))
// 后台 - 查看日志
app.use('/admin/log', require('./routes/admin/log'))
// 后台 - 账户管理
app.use('/admin/account', require('./routes/admin/account'))
// 

app.listen(3000, () => { console.log('listen on port 3000') })